/* 
 * Shuriken is the legal property of its developers. Please refer to the
 * COPYRIGHT file distributed with this
 * source distribution.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

using System;
using System.Collections.Generic;
using System.Text;
using Shuriken.Core.Store;
using System.Windows.Forms; 

namespace Shuriken.Core.Store.Items {

    /// <summary>
    /// Windows Media Player Application item class 
    /// </summary>
    //public class WMPApplicationItem : Shell32FolderItem 
    //{
    //    public WMPApplicationItem() {
    //    }

    //    public WMPApplicationItem(Shell32FolderItem fitem)
    //        : base(fitem)
    //    {
    //    }


    //    #region IApplicant Members

    //    public void Apply() 
    //    {
    //        //string key = "Windows Media Player";
    //        //StartMenuStore StartMenu = StartMenuStore.GetInstance();

    //        //IStoreItem item = StartMenu[key];

    //        //if (item == null) {
    //        //    // item not found, we need to create our own item here and add it to the start menu store               
    //        //    // System.Diagnostics.Trace.Assert(item != null, "Application item not found!");
    //        //} else {
    //        //    Shell32FolderItem StartMenuItem = (Shell32FolderItem)item;
    //        //    WMPApplicationItem appItem = new WMPApplicationItem(StartMenuItem);
    //        //    StartMenu[key] = appItem;
    //        //}
    //    }

    //    #endregion

    //    /// <summary>
    //    /// Registering actions for this item
    //    /// </summary>
    //    public override void RegisterActions() {
    //        WMPApplicationItemNextSongAction next = new WMPApplicationItemNextSongAction();
    //        next.RegisterAction();

    //        WMPApplicationItemPreviousSongAction prev = new WMPApplicationItemPreviousSongAction();
    //        prev.RegisterAction();

    //        WMPApplicationItemPlayPauseAction playpause = new WMPApplicationItemPlayPauseAction();
    //        playpause.RegisterAction();

    //        WMPApplicationItemVolumeDownAction voldown = new WMPApplicationItemVolumeDownAction();
    //        voldown.RegisterAction();

    //        WMPApplicationItemVolumeUpAction volup = new WMPApplicationItemVolumeUpAction();
    //        volup.RegisterAction();

    //        WMPApplicationItemVolumeMuteAction mute = new WMPApplicationItemVolumeMuteAction();
    //        mute.RegisterAction();
    //    }

    //    #region Actions 

    //    [ActionName("Play/Pause")]
    //    [ActionSubjectType(typeof(WMPApplicationItem))]
    //    public class WMPApplicationItemPlayPauseAction : Shell32FolderItemBaseAction {
    //        /// <summary>
    //        /// Executes this action 
    //        /// </summary>
    //        /// <param name="subject">subject to execute on</param>
    //        public override void Execute(Shell32FolderItem subject) {
    //            WMPActionsImplemetation.PlayPauseAction();
    //        }
    //    }

    //    [ActionName("Volume Mute")]
    //    [ActionSubjectType(typeof(WMPApplicationItem))]
    //    public class WMPApplicationItemVolumeMuteAction : Shell32FolderItemBaseAction {
    //        /// <summary>
    //        /// Executes this action 
    //        /// </summary>
    //        /// <param name="subject">subject to execute on</param>
    //        public override void Execute(Shell32FolderItem subject) {
    //            WMPActionsImplemetation.VolumeMuteAction();
    //        }
    //    }

    //    [ActionName("Volume Down")]
    //    [ActionSubjectType(typeof(WMPApplicationItem))]
    //    public class WMPApplicationItemVolumeDownAction : Shell32FolderItemBaseAction {
    //        /// <summary>
    //        /// Executes this action 
    //        /// </summary>
    //        /// <param name="subject">subject to execute on</param>
    //        public override void Execute(Shell32FolderItem subject) {
    //            WMPActionsImplemetation.VolumeDownAction();
    //        }
    //    }

    //    [ActionName("Volume Up")]
    //    [ActionSubjectType(typeof(WMPApplicationItem))]
    //    public class WMPApplicationItemVolumeUpAction : Shell32FolderItemBaseAction {
    //        /// <summary>
    //        /// Executes this action 
    //        /// </summary>
    //        /// <param name="subject">subject to execute on</param>
    //        public override void Execute(Shell32FolderItem subject) {
    //            WMPActionsImplemetation.VolumeUpAction();
    //        }
    //    }

    //    [ActionName("Next Song")]
    //    [ActionSubjectType(typeof(WMPApplicationItem))]
    //    public class WMPApplicationItemNextSongAction : Shell32FolderItemBaseAction {
    //        /// <summary>
    //        /// Executes this action 
    //        /// </summary>
    //        /// <param name="subject">subject to execute on</param>
    //        public override void Execute(Shell32FolderItem subject) {
    //            WMPActionsImplemetation.NextTrackAction(); 
    //        }
    //    }

    //    [ActionName("Previous Song")]
    //    [ActionSubjectType(typeof(WMPApplicationItem))]
    //    public class WMPApplicationItemPreviousSongAction : Shell32FolderItemBaseAction {
    //        /// <summary>
    //        /// Executes this action 
    //        /// </summary>
    //        /// <param name="subject">subject to execute on</param>
    //        public override void Execute(Shell32FolderItem subject) {
    //            WMPActionsImplemetation.PreviousTrackAction();
    //        }
    //    }

    //    #endregion

    //    #region Windows Media Player Action Implementation

    //    internal sealed class WMPActionsImplemetation 
    //    {
    //        private static ApplicationCommandHelper m_AppCommandHelper; 

    //        static WMPActionsImplemetation()
    //        {
    //            List<string> wndClasses = new List<string>();

    //            wndClasses.Add("WMP Skin Host");
    //            wndClasses.Add("WMPlayerApp");

    //            m_AppCommandHelper = new ApplicationCommandHelper(wndClasses);
    //        }


    //        /// <summary>
    //        /// Play Pause Command 
    //        /// </summary>
    //        internal static void PlayPauseAction() {
    //            m_AppCommandHelper.PlayPauseCommand();
    //        }

    //        /// <summary>
    //        /// Mute Volume Command 
    //        /// </summary>
    //        internal static void VolumeMuteAction() {
    //            m_AppCommandHelper.VolumeMuteCommmand();
    //        }

    //        /// <summary>
    //        /// Volume Up Command 
    //        /// </summary>
    //        internal static void VolumeUpAction() {
    //            m_AppCommandHelper.VolumeUpCommand();
    //        }

    //        /// <summary>
    //        /// Volume Down Command 
    //        /// </summary>
    //        internal static void VolumeDownAction() {
    //            m_AppCommandHelper.VolumeDownCommand();
    //        }

    //        /// <summary>
    //        /// Next Track Command 
    //        /// </summary>
    //        internal static void NextTrackAction() {
    //            m_AppCommandHelper.NextTrackCommand();
    //        }

    //        /// <summary>
    //        /// Previous Track Command 
    //        /// </summary>
    //        internal static void PreviousTrackAction() {
    //            m_AppCommandHelper.PreviousTrackCommand();
    //        }

    //    }
    //    #endregion

    //}

}
